package com.ctu.app.utils;

import java.io.DataOutputStream;
import java.io.File;
import java.io.IOException;

import android.os.Environment;
import android.os.SystemClock;
import android.util.Log;

public class CommonUtils {
	private static String LOG_FILE_NAME = "autodial_exception";// 保存异常日志
	private static final String TAG = "CommonUtils";

	/**
	 * 重启设备
	 * 
	 */
	public static void reboot() {
		String cmd = "su -c reboot";

		try {
			Runtime.getRuntime().exec(cmd);
		} catch (IOException e) {

			// LogUtil.saveLog2File("重启失败");
		}

	}

	/**
	 * 获取系统root权限
	 */
	private void getRootLimits() {
		try {
			Process suProcess = Runtime.getRuntime().exec("su");
			DataOutputStream os = new DataOutputStream(
					suProcess.getOutputStream());
			os.writeBytes("\n");
			os.flush();
		} catch (Throwable e) {
			e.printStackTrace();
		}
	}

	/**
	 * 关机
	 */
	public void shutdown() {
		try {

			Process process = Runtime.getRuntime().exec("su");
			DataOutputStream out = new DataOutputStream(
					process.getOutputStream());
			out.writeBytes("reboot -p\n");
			out.writeBytes("exit\n");
			out.flush();
		} catch (IOException e) {
			// LogUtil.saveLog2File("关机失败");
		}
	}

	/**
	 * 在sd卡上创建文件夹
	 * 
	 * @param dir
	 * @return
	 */
	public static File createSDCardDir(String dir) {
		File filePath = null;
		if (Environment.MEDIA_MOUNTED.equals(Environment
				.getExternalStorageState())) {
			// 创建一个文件夹对象，赋值为外部存储器的目录
			File sdcardDir = Environment.getExternalStorageDirectory();
			// 得到一个路径，内容是sdcard的文件夹路径和名字
			String path = sdcardDir.getPath() + "/" + dir;
			filePath = new File(path);
			if (!filePath.exists()) {
				// 若不存在，创建目录，可以在应用启动的时候创建
				Log.d(TAG, "正在创建目录: " + path);
				filePath.mkdirs();// 多层文件夹
			} else {
				Log.d(TAG, "目录已存在: " + path);
			}
		}
		return filePath;
	}

	/**
	 * 判断是否开机1小时，如果开机1小时，就gc一次，然后，每隔1小时gc一次 使用
	 * 
	 * 每隔1小时的算法：整点的2分钟之内,进行System.gc();
	 * 
	 * @return
	 */
	public static boolean isOneHour() {

		// double hour = 2;
		// double min = 1;
		// double min = 1;

		double hour = SystemClock.elapsedRealtime() / 1000 / 60 / 60;
		double min = SystemClock.elapsedRealtime() / 1000 / 60 % 60;

		if (min >= 0) {
			if (((min / 60) >= 0.00) && ((min / 60) < 0.03)) {
				min = 0;

			}
		}

		double time = hour + min / 60;
		System.out.println("hour: " + hour + "," + "min: " + min
				+ "----->time: " + time);

		if (hour >= 1) {
			if (time % 1 == 0) {
				System.out.println("secondCount: " + hour);
				return true;
			}
		}

		return false;
	}
}
